Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions homework/62374/java2html/CommonTypes.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#pragma once
#include <string>
#include <vector>
#include <unordered_map>
#include <memory>
#include <stack>
#include <cassert>

template<typename T>
using IPLVector = std::vector<T>;
using IPLString = std::string;

template<typename T, typename K>
using IPLPair = std::pair<T, K>;

template <typename T>
using IPLStack = std::stack<T>;

template <typename Key, typename T>
using IPLUnorderedMap = std::unordered_map<Key, T>;

template <typename T>
using IPLSharedPtr = std::shared_ptr<T>;

template <typename T, class... Args>
inline IPLSharedPtr<T> IPLMakeSharePtr(Args&&... args) {
return std::make_shared<T, Args...>(args...);
};

template< typename T>
using IPLEnableShared = std::enable_shared_from_this<T>;

struct IPLError
{
unsigned Row;
unsigned Column;
IPLString File;
IPLString What;
};

#define NOT_IMPLEMENTED assert(0 && "not-implemented")
157 changes: 157 additions & 0 deletions homework/62374/java2html/Lexer.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
#pragma once

#include "CommonTypes.h"

enum class TokenType
{
// Single-character tokens.
LeftParen,
RightParen,
LeftBrace,
RightBrace,
Comma,
Dot,
Minus,
Plus,
Semicolon,
Star,
Division,
Modulo,
BitwiseNot,
BitwiseAnd,
BitwiseXor,
BitwiseOr,
QuestionMark,
Colon,
LeftSquareBracket,
RightSquareBracket,

// One or two character tokens
Bang,
BangEqual,
Equal,
EqualEqual,
StrictEqual,
StrictNotEqual,
Greater,
GreaterEqual,
Less,
LessEqual,
MinusMinus,
PlusPlus,
LeftShift,
RightShift,
LogicalAnd,
LogicalOr,
StarEqual,
DivideEqual,
ModuloEqual,
PlusEqual,
MinusEqual,
LeftShiftEqual,
RightShiftEqual,
BitwiseAndEqual,
BitwiseXorEqual,
BitwiseOrEqual,
Backslash,

Identifier,
String,
Number,

// Keywords. ECMAScript 2015
Keyword,
Abstract,
Package,
Synchronize,
Boolean,
Private,
Double,
Implements,
Protected,
Byte,
Public,
Throws,
Transient,
Int,
Short,
Char,
Final,
Interface,
Static,
Long,
Float,
Break,
Case,
Catch,
Class,
Const,
Continue,
Debugger,
Default,
Delete,
Do,
Else,
Export,
Extends,
Finally,
For,
Function,
If,
Import,
In,
Instanceof,
New,
Return,
Super,
Switch,
This,
Throw,
Try,
Typeof,
Var,
Let,
Void,
While,
With,
Yield,
Null,
Undefined,
True,
False,
StringType,

Whitespace,
Tab,
NewLine,
Comment,

Eof,
Invalid
};

struct Token
{
TokenType Type;
unsigned Line;
unsigned Column;
IPLString Lexeme;
double Number;
IPLString nonModifiedLexeme;
};

struct LexerResult
{
bool IsSuccessful;
IPLError Error;
IPLVector<Token> tokens;
};

struct LexerSettings
{
bool CreateWhitespaceTokens;
bool CreateCommentTokens;
};

LexerResult Tokenize(const char* code, const LexerSettings& settings);
LexerResult Tokenize(const char* code);
15 changes: 15 additions & 0 deletions homework/62374/java2html/Prime.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
public class Prime {public static void main(String[] args) {int low = 20, high = 50;while (low < high) {boolean flag = false;for(int i = 2; i <= low/2; ++i) {
// condition for nonprime number
if(low % i == 0) {
flag = true;
break;
}
}

if (!flag && low != 0 && low != 1) {
System.out.print(low + " ");}

++low;
}
}
}
Loading