How do you distinguish between the token sequence "op_Minus" "number" and simple a negative number?
Compiler Design: How do you distinguish between "op_Minus number" and "negativeNumber"?
420 views Asked by Jonathan Allen At
1
There are 1 answers
Related Questions in COMPILER-CONSTRUCTION
- Reference: Crafting Interpreters. Print statement is not able to evaluate expression. Help me fix this (details below)
- Load function written in amd64 assembly into memory and call it
- I have implemented till Statements and State in Tree Walk Interpreter. I am pissed with an error
- Resolve shift/reduction conflict in grammar for expressions in PLY for calls to embedded functions
- Grammar for access to properties and calls to embedded functions
- LLVM code generation causes problems with pointer arithmetic
- what does react compiler mean actually?
- Errors on Recursive Descent Parsing Java
- Java CUP produces Shift-Reduce conflict when parsing a grammar for a C++ type language
- Three-Address-Code (TAC) and Conjunction/Disjunction
- How do I write an implicit cast for my strongly typed interpreter? (C++)
- Yacc parser not reducing specific production rules as intended
- Why is the function version tag consistently "Base" in HDF5 library?
- Sly parser, how are recursively defined types implemented?
- Does a non terminal token need an explicit definition?
Related Questions in LANGUAGE-DESIGN
- Why are pre-allocated stacks expensive, given 64-bit virtual memory?
- Why does the C++17 standard not allow converting a string to a bool?
- Detecting shared structure in tree made of cons cells
- How can I control the type of the collection created by a collection expression?
- Why do object-oriented programming languages require manually-written getter functions?
- Is type checking required for languages with full type inference (without type annotations)?
- Is it possible to make zero-allocation coroutine runtime in C++?
- Has entry keyword ever been implemented in C?
- Rationale behind C++ member variables declaration
- Rationale why is macro redefinition without undef leads to ill-formed program
- NAN Box Negative Int
- Can i define type-level naturals in F#, then use them in C#?
- Defining an infinite family of classes "MatrixMxN" in C#
- Why does std::optional not use a sentinel value to represent an empty optional?
- Why is the std::iterator_traits::iterator_category for pointers not std::contiguous_iterator_tag?
Related Questions in COMPILER-THEORY
- What is the point of the 4 grammars specified in Chomsky hierarchy?
- How does the latest ANTLR4 resolve the "dangling else" ambiguity?
- Why don't most interpreted languages like ruby provide an optional compiler?
- Print integers as strings in mips programs
- Exercise 4.2.8 from "Compilers - Principles, Techniques, & Tools" (a.k.a. Dragon Book)
- Eliminate Left Recursion in a Context Free Grammar
- What is Local and Global optimization in Compiler Design?
- Interpreter and Compiler
- Why can't compilers automatically optimize regular recursion?
- Computing Liveness of Arrays and Other Non-Scalars in Low Level Intermediate Code
- can I reduce executable file size by defining funtions in source code?
- How easy is to find a string that leads to conflict in a SLR(1) parser compared to a LR(1)
- Finding a grammar is not LL(1) without using classical methods and transforming it to LL(1)
- Is this an intermediate representation?
- Writing a Compiler in C
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
I would think it's context dependent and dependent on the number of operands you encounter while parsing the source code.
Depending on the type of syntax you choose/encounter, you either have something like this when you're dealing with subtraction:
or if your language uses prefix notation, you'll end up with something like this:
In both cases you should be able to either deduce from the previous token (in the case of infix notation) or from the lookahead to the next token/next two tokens) if you're dealing with a subtraction or a negative number, given that the latter would only have a single operand.